class Solution {  //二分查找，二段性(>=、<)
public:  //根据最终结果(=x、第一个>x的数)，分为两个区间<、>=(结果值)
    int searchInsert(vector<int>& nums, int target) {
    int left = 0, right = nums.size() - 1;
    while(left < right)  //循环条件
    {
        int mid = left + (right - left) / 2; //中间值的选择(后面没有-1，不要+1)
        if(nums[mid] < target) left = mid + 1; 
        else right = mid;
    }
    //left会一直向右走，right不动，直到left=right=size-1
    if(nums[left] < target) return left + 1; 
    //有结果，left=right=结果值(x、第一个>x的数) 
    else return left;
    }
};